#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_object.hpp>
#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/fusion/include/io.hpp>

#include "nlp.hpp"

const char * detr[] = { "a", "an", "the", NULL };
const char * possPronoun[] = { "his", "her", "its", "their", NULL };
const char * objPronoun[] = { "him", "her", "it", "them", NULL };
const char * subjPronoun[] = { "he", "she", "it", "they", NULL };
const char * prep[] = { "on", "of", "above", "below", "under", "in",
    "to", "across", "against", "at", "before", "behind", "beneath",
    "beside", "between", "by", "from", "into", "upon", "up",
    "inside",
    NULL
};
const char * whq[] = { "what", "where", "when", "why", "who", "how", NULL };

// Conjunctions
// and -> noun phrase + noun phrase
// but -> sentence + sentence
// or -> verb + verb
const char * conjunc[] = { "and", "or", "but", NULL };
const char * neg[] = { "not", "no", NULL };
const char * count[] = { "some", "all", "none", NULL };

const SentencePart SentenceStructure[6][4] = {
	{ SentencePart::Verb },
	{ SentencePart::Verb, SentencePart::Noun },
	{ SentencePart::Verb, SentencePart::Preposition, SentencePart::Noun },
	{ SentencePart::Verb, SentencePart::Noun, SentencePart::Preposition, SentencePart::Noun },
	{ SentencePart::Person, SentencePart::Verb, SentencePart::Noun },
	{ SentencePart::Verb, SentencePart::Noun, SentencePart::Conjunction, SentencePart::Noun },
};
struct SentenceStruct
{
	std::string	verb;
	std::string direct;
	std::string indirect;
	std::string prep;
	std::string conj;
};

